#ifndef GAME_STATE_MANAGER_H
#define GAME_STATE_MANAGER_H

#include <stack>
#include "GameState.h"

class GameStateManager
{
    public:
        
        void ChangeState(GameState* state);
        
        void PushState(GameState* state);
        
        void PopState();
        
        void Update();
        
        void Render(SDL_Surface* surface);
        
    private:
        
        std::stack<GameState*> _active_states;
        
        GameState* GetCurrentState();
        
        GameState* PopCurrentState();
};

#endif
